import 'package:black_movice/config/configs.dart';
import 'package:black_movice/models/MoviceListModel.dart';
import 'package:black_movice/routers.dart';
import 'package:black_movice/utils/Utils.dart';
import 'package:extended_image/extended_image.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';

// 定义电影卡片组件，继承自 StatefulWidget
class MoviceCard extends StatefulWidget {
  // 接收电影数据模型
  final MoviceListModel movice;

  // 构造函数，初始化 movice 属性
  const MoviceCard({
    super.key,
    required this.movice,
  });

  @override
  State<MoviceCard> createState() => _MoviceCardState();
}

// 定义 MoviceCard 组件的状态类
class _MoviceCardState extends State<MoviceCard> {
  @override
  Widget build(BuildContext context) {
    // 使用 Card 组件作为外层容器，提供卡片样式
    return Card(
      // 设置卡片的阴影效果，数值越大阴影越明显
      elevation: 0.5,
      // 设置卡片的形状，这里使用圆角矩形
      shape: RoundedRectangleBorder(
        // 设置圆角半径，使用 ScreenUtil 的 r 方法进行适配
        borderRadius: BorderRadius.circular(5.r),
      ),
      // 使用 InkWell 组件为卡片添加点击反馈效果和点击事件处理
      child: InkWell(
        // 绑定点击事件，当卡片被点击时，打印电影信息
        onTap: () {
          Utils.logDebug('被点击${widget.movice.id}');
          Get.toNamed(Routers.details,
              arguments: {"moviceId": widget.movice.id});
        },
        // 确保 InkWell 的圆角和卡片一致
        borderRadius: BorderRadius.circular(5.r),
        child: SizedBox(
          // 设置卡片的宽度，使用 ScreenUtil 的 w 方法进行适配
          width: 170.w,
          // 设置卡片的高度，使用 ScreenUtil 的 h 方法进行适配
          // height: 220.h,
          child: Column(
            // 设置主轴大小为最小，避免布局冲突
            mainAxisSize: MainAxisSize.min,
            children: [
              Flexible(
                // 使用宽松的弹性适配，让子组件根据自身内容调整大小
                fit: FlexFit.loose,
                child: ClipRRect(
                  borderRadius: BorderRadius.vertical(
                    // 设置图片顶部的圆角半径
                    top: Radius.circular(10.r),
                  ),
                  // 使用 ExtendedImage.asset 加载电影封面图片
                  child: ExtendedImage.asset(
                    widget.movice.cover!,
                    // 设置图片的填充方式为覆盖
                    fit: BoxFit.cover,
                    // 设置图片的高度，使用 ScreenUtil 的 h 方法进行适配
                    height: 180.h,
                    // 设置图片的宽度，使用 ScreenUtil 的 w 方法进行适配
                    width: 170.w,
                  ),
                ),
              ),
              Padding(
                // 设置文本的内边距，使用 ScreenUtil 的 w 方法进行适配
                padding: EdgeInsets.all(8.w),
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: [
                    Text(
                      widget.movice.name!,
                      // 设置文本居中显示
                      textAlign: TextAlign.center,
                      style: TextStyle(
                        // 设置文本字体大小，使用 ScreenUtil 的 sp 方法进行适配
                        fontSize: 14.sp,
                        // 设置文本字体加粗
                        fontWeight: FontWeight.bold,
                      ),
                    ),
                    Text(
                      "${widget.movice.rating}分   ",
                      style: TextStyle(
                          color: Colors.lightBlueAccent,
                          fontSize: Configs.textSize_12),
                    ),
                  ],
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
